// <![CDATA[
$.ajaxSetup({
  statusCode: {
        401: function() {
            window.location.href = '/';
        }
    }
});

$(document).ready(function() {
    var ajax_loader_img = '/assets/js/ajax-loader.gif';
    var folder_img      = '/images/folder.gif';
    var folder_open_img = '/images/folder-open.gif';
    var file_img        = '/images/star-small.gif';
    
    var bookmark_img        = '/images/bookmark.gif';
    var bookmark_open_img   = '/images/open-bookmark.gif';
//    var bookmark_file_img   = '/images/bookmark.gif';

    var img_ok   = '/images/tick.png';
    var img_err   = '/images/exclamation-red.png';
    
    //tree
    /**
     * show/close elems tree
     */
    $('div#tree-container').on('click', 'li.dir > img.hand', function(){
        var li = $(this).parent();
        var id = li.attr('id');
        var img = $(this);
        if(!li.hasClass('loaded')){
            $.ajax({
                url: '/ajax/show_node/'+id,
                beforeSend: function(){
//                     li.addClass('loading');
                     img.attr('src',ajax_loader_img);
                },
                success: function(data){
                     img.attr('src',folder_open_img); 
                     li.append(data).addClass('loaded');
                     li.children("ul").slideToggle('fast');

                     if( 0 < li.find("li.file:first").length && 0 < li.find("li.dir:first").length ){
                        li.children("a").attr("rel","1");
                     }
                     
                     tree_handler();

                     setTimeout(change_node, 500, id, 1);
                }
            });
        }else{
            var status;
            if(li.children("ul").is(':visible')){
                img.attr('src',folder_img);
                status = 0;
            }else{
                img.attr('src',folder_open_img); 
                status = 1;
            }
            li.children("ul").slideToggle('fast');
            setTimeout(change_node, 500, id, status); 
        }
    });
    
    
    function change_node(id,status){
        $.ajax({
            url: '/ajax/change_node/'+id+'/'+status
        });
    }
    
    $('div#tree-container').on('click', 'li.file > img.hand', function() {
        var li = $(this).parent();
        var id = li.attr('id');
        var img = $(this);
        
        $.ajax({
            url: '/ajax/add_bookmark/' + id,
            beforeSend: function() {
                img.attr('src',ajax_loader_img);
            },
            success: function() {
                img.animate({opacity: 0.01}, 100, function(){
                    img.attr('src',img_ok).animate({opacity:1});
                });
                reload_bookmarks();
            },
            error: function(){
        
            },
            complete: function(){
                setTimeout(function(){
                    img.animate({opacity: 0.01}, 50, function(){
                        img.attr('src',file_img).animate({opacity:1},100);
                    });
                },2000);
            }
        });
    });
    
    $('div#search-container').on('click', 'li.file > img.hand', function() {
        var li = $(this).parent();
        var id = li.attr('id');
        var img = $(this);
        
        $.ajax({
            url: '/ajax/add_bookmark/' + id,
            beforeSend: function() {
                img.attr('src',ajax_loader_img);
            },
            success: function(){
                ajaxListOk(img);
            },
            error: function(){
                ajaxListError(img);
            },
            complete: function(){
                ajaxListComplete(img, file_img);
            }
        });
    });
    
    /*
     * ajax animate
     */
    function ajaxListOk(img) {
        console.log('ok');
        img.animate({opacity: 0.01}, 100, function() {
            img.attr('src', img_ok).animate({opacity: 1});
        });
    }
    function ajaxListError(img){
        console.log('errro');
        img.animate({opacity: 0.01}, 100, function(){
            img.attr('src',img_err).animate({opacity:1}).effect('pulsate',700);
        });
    }
    function ajaxListComplete(img,file_img){
        setTimeout(function(){
            img.animate({opacity: 0.01}, 50, function(){
                img.attr('src',file_img).animate({opacity:1},100);
            });
        },2000);
    }
    
    
    
    /**
     * bookmarks
     * 
     */
    
    $('div#bookmarks-container').on('click', 'li.bmdir > img.hand', function() {
        var li = $(this).parent();
        var id = li.attr('id');
        var img = $(this);

        var status = 0;

        if (li.children("ul").is(':visible')) {
            img.attr('src', bookmark_img);
            status = 0;
        } else {
            img.attr('src', bookmark_open_img);
            status = 1;

        }
        li.children("ul").slideToggle('fast');
        change_bookmark(id, status);
    });

    function change_bookmark(id, status) {
        $.ajax({
            url: '/ajax/change_bkmk/' + id + '/' + status
        });
    }
    
   $('div#bookmarks-container').on('click', 'li.bmfile > img.hand', function(){
        var li = $(this).parent();
        var id = li.attr('id');
        var res = confirm("Удалить из закладок?");

        if(res){
            $.ajax({
                url: '/ajax/remove_bookmark/'+id,
                success: function(){
                    li.remove();
                },
                error: function(){
                    reload_bookmarks();
                }
            });
        }
    });
    
    $('div#modalGroup form#addFolder').submit(function(stop){ 
        stop.preventDefault();// отменяем стандартную отправку
        var form = $(this);
        
        var folder_name = form.find('input[name = folderName]').val();
        
        $.ajax({
            url: '/ajax/add_dir_bkmk/'+encodeURIComponent(folder_name),
            success: function(){
                $("div#modalGroup").modal('hide'); 
                reload_bookmarks();
            },
            error: function (){
                form.find('div.modal-body').addClass('has-error').focus();
            }
        });
    });
    
    var prevcheckbox = $('form#formConfig input#chartprev');
    
    prevcheckbox.change(function(){
        prev_check($(this));
    });
    
    prev_check(prevcheckbox);
    
    function prev_check(prevcheckbox){
        var fieldset = $('form#formConfig fieldset[name = prevfields]');
//        console.log(fieldset);
        if(prevcheckbox.is(':checked')){
            fieldset.prop('disabled', false);
        }else{
            fieldset.prop('disabled', true);
        }
    }
    
    
    /**
     * drag and drop, need jquery UI
     */
    function bookmarks_handler(){
        $('div#bookmarks-container ul li.bmdir, div#bm00').droppable({
            greedy: true,
            hoverClass: 'dropHere',
    //        tolerance: 'fit',
            tolerance: 'intersect',
            accept: 'li.bmfile, li.bmdir, li.file',
            addClasses: false,
            drop: function(event, ui) {
                var drag = ui.draggable;
                var drag_id = drag.attr('id');
                var drop_id = $(this).attr('id');
                if(drop_id == 'bm00') drop_id = 0;

                if (drag.hasClass('file')) {
                    $.ajax({
                        url: '/ajax/add_bookmark/' + drag_id + '/' + drop_id,
                        success: function() {
                            reload_bookmarks();
                        }
                    });

                } else {
                    if (event.ctrlKey === true) {
                        //alert('ctrl press!')
                        $.ajax({
                            url: '/ajax/copy_bkmk/' + drag_id + '/' + drop_id,
                            success: function() {
                                reload_bookmarks();
                            }
                        });
                    } else {
                        $.ajax({
                            url: '/ajax/change_parent/' + drag_id + '/' + drop_id,
                            success: function() {
                                reload_bookmarks();
                            }
                        });
                    }
                }
            }
        });
        
        $('div#bookmarks-container li.bmfile, div#bookmarks-container li.bmdir').draggable({
//        $('div#bookmarks-container li.bmfile').draggable({
            helper : 'original',
            //delay: 300,
            handle: "a, img",
            distance: 15,
            zIndex: 100,
            opacity: 0.9,
            cursor: 'move',
            revert: 'invalid',
            addClasses : false,
            drag: function() {
                $(".editbk").stop(true, true);
            }
        }); //*/
    }
    
    function tree_handler(){
        $('div#tree-container li.file').draggable({
            helper : 'clone',
            handle: "a, img",
            distance: 15,
            //delay: 300,
            zIndex: 100,
            opacity : 0.8,
            cursor: 'move',
            revert: 'invalid',
            addClasses: false
        }); //*/
    }
    
    bookmarks_handler();
    tree_handler();
    
    function reload_bookmarks() {
        $('div#bookmarks-container div.col-sm-12').load("/ajax/get_bookmarks", bookmarks_handler);
    };

    /** edit menu */
    
    var optionsPop = {
        content: '<a href="#" class="poprename">Переименовать</a><br><a href="#" class="popshare">Поделиться</a><br><a href="#" class="popdelete">Удалить</a>',
        delay: { "show": 800, "hide": 1000 },
        html: true,
        trigger: 'hover',
        selector: 'div#bookmarks-container li.bmdir > a',
        placement: 'left'
    };
    
    $(this).popover(optionsPop);
    
    $('div#bookmarks-container').on('click', 'div.popover a', function() {
        var elem = $(this);
        var elem_li = elem.parents('li:first');
        var elem_name = elem_li.children('a').text();
        var id = elem_li.attr('id');
        
        if(elem.hasClass('poprename')){
            var new_name = prompt("Переименовать папку",elem_name);
            if(new_name){
                $.ajax({
                    url: '/ajax/rename_dir_bkmk/'+encodeURIComponent(new_name)+'/'+id,
                    success: function(){
//                        growl_success('Успешно!', 'Закладки переименованны!');
                        reload_bookmarks();
                    },
                    error: function(){
                        growl_danger('Ошибка!', 'Внутренняя ошибка сервиса.');
                    }
                });
            }
//            console.log(id+  ' rename ' + elem_name);       
//            console.log(elem);
        }else if(elem.hasClass('popshare')){
            var to_user_name = prompt("Укажите пользователя");
            if(to_user_name.length > 0){
                $.ajax({
                    url: '/ajax/share_bookmark/'+id+'/'+to_user_name,
                    dataType: 'json',
                    success: function(data){
//                        console.log('alert success');
                        if(data.code === 200){
                            growl_success('Успешно!', 'Закладки переданы!');
//                            $().message("Закладки переданы!");
                        }else{
                            growl_danger('Ошибка!', 'Закладки передать не удалось.');
//                            $().message("Упсс, неудача! :-(");
                        }
                    },
                    error: function(){
//                        console.log('alert error');
                        growl_danger('Ошибка!', 'Внутренняя ошибка сервиса.');
//                        $().message("Ошибка сервера! :-(");
                    }
                });
            }
            
        }else if(elem.hasClass('popdelete')){
            console.log(id + ' del');       
            var res = confirm("Уверены, что хотите удалить '"+elem_name+"' вместе со всем её содержимым?");

            if(res){
                $.ajax({
                    url: '/ajax/remove_bookmark/'+id,
                    dataType: 'json',
                    success: function(data){
                        console.log(data);  
                        if(data.code === 200){
                            reload_bookmarks();
                        }else{
                            growl_danger('Ошибка!', 'Что-то пошло не так! :-(');
//                            $().message("Что-то пошло не так! :-(");
                        }
                    },
                    error: function(){
                        growl_danger('Ошибка!', 'Внутренняя ошибка сервиса.');
//                        $().message("Ошибка сервера! :-(");
                    }
                });
            }
        }
        
    });
        
    /* Search block */
    $("input#search").autocomplete({
        source: "/ajax/live_search",
        delay: 300,
        minLength: 3 /*,
        select: function(event, ui) {
            console.log(ui.item);
        }*/
    });
    
    /** *settings form */
    
    $('div#modalConfig').on('submit','form#formConfig',function(e){
        e.preventDefault();
        var form = $(e.target);
        
        $.ajax({
            url:'/ajax/set_cookie/',
            data:form.serialize(),
            success: function(data){
                //console.log(data);
                if(data.length > 0){
                    growl_success('Выполнено','Настройки сохранены');
                }
            }, 
            error: function(){
                growl_danger('Ошибка','Не удалось сохранить настройки');
            },
            complete: function(){
                $('div#modalConfig').modal('hide');
            }
        });   //*/
    });
    
    
    /** to top on page*/
    $('a#toTop').click(function(){
        $("html, body").animate({ scrollTop: "0px" },'fast')
    });
    
    $( window ).scroll(function(){
        var scroll = $(this).scrollTop();
        var ll = 300;
        
        if(scroll > ll){
            $('a#toTop').fadeIn('slow');
        }
        if(scroll < ll){
            $('a#toTop').fadeOut('slow');
        }
    });
    
               
    /**
     * Color picker
     */
    
    $('div.colorpick').colorpicker();

    
    /******************/
    /*$('a.navbar-brand').click(function(){
        $(this).effect("highlight", {}, 3000);
        
        return false;
    });*/
    
    
    
});
// ]]>